package br.com.websec.boleto;

import java.io.File;

import sun.io.CharToByteCp1112;

import br.com.caelum.stella.boleto.Boleto;
import br.com.caelum.stella.boleto.Datas;
import br.com.caelum.stella.boleto.Emissor;
import br.com.caelum.stella.boleto.Sacado;
import br.com.caelum.stella.boleto.bancos.BancoDoBrasil;
import br.com.caelum.stella.boleto.bancos.Itau;
import br.com.caelum.stella.boleto.transformer.GeradorDeBoleto;
import br.com.websec.carteira.CarteiraRN;
import br.com.websec.cliente.ClienteRN;
import br.com.websec.endereco.Endereco;
import br.com.websec.endereco.EnderecoRN;
import br.com.websec.titulo.Titulo;
import br.com.websec.titulo.TituloRN;

public class GeraBoleto {
	
	public void gerarBoleto(Integer idTitulo){
		
		TituloRN tRN = new TituloRN();
		Titulo t = tRN.buscarPorId(idTitulo);
		EnderecoRN eRN = new EnderecoRN();
		Endereco e = eRN.buscarPorCliente(t.getCliente().getIdCliente());
		
	
		Datas datas = Datas.novasDatas()
			    .comDocumento(8, 12, 2013)
			    .comProcessamento(8, 12, 2013)
			    .comVencimento(10, 12, 2013);  

		Emissor emissor = Emissor.novoEmissor()  
	            .comCedente(t.getFornecedor().getRazaoSocial())  
	            .comAgencia(Integer.valueOf(t.getConta().getAgencia().getNumero())).comDigitoAgencia('1')  
	            .comContaCorrente(Long.valueOf(t.getConta().getNumeroConta()))
	            .comNumeroConvenio(Long.valueOf(t.getDocumentoCobranca()))  
	            .comDigitoContaCorrente('1')  
	            .comCarteira(t.getCarteira().getNumeroCarteira())  
	            .comNossoNumero(Long.valueOf(t.getIdentificacaoTituloEmpresa()))
	            .comDigitoNossoNumero(t.getDigitoNossoNumero());

        Sacado sacado = Sacado.novoSacado()  
	    .comNome(t.getCliente().getRazaoSocial())  
            .comCpf(t.getCliente().getCnpj())  
            .comEndereco(e.getLogradouro()+ ", "+e.getNumero()+" - "+e.getComplemento())  
            .comBairro(e.getBairro())  
            .comCep(e.getCep())  
            .comCidade(e.getCidade())  
            .comUf(e.getUf());
        
        String diretorio =  "E:"+File.separator+File.separator+"arquivos"+File.separator;
        
        
        if (t.getBanco().getCodigoBanco().equals("341")){
        	
        	Itau itau = new Itau();
        	
        	Boleto bItau = Boleto.novoBoleto()  
                    .comBanco(itau)  
                    .comDatas(datas)  
                    .comDescricoes("", "", "", "", "")  
                    .comEmissor(emissor)  
                    .comSacado(sacado)  
                    .comValorBoleto(t.getValor())  
                    .comNumeroDoDocumento(t.getIdentificacaoTituloEmpresa())  
                    .comInstrucoes(t.getMensagem1(), t.getMensagem2(), "", "", "")  
                    .comLocaisDePagamento("", "")
        			.comEspecieDocumento("Duplicata Mercantil");
        	
            GeradorDeBoleto geradorIT = new GeradorDeBoleto(bItau);
            
            if(idTitulo == 1){
            	 idTitulo++;
            }else{
            	idTitulo = 1;
            }
           
         //    geradorIT.geraPDF(diretorio+File.separator+"BancoItau.pdf");  

         // Para gerar um boleto em PNG  
         //   geradorIT.geraPNG(diretorio+File.separator+"BancoItau.png");  

            // Para gerar um array de bytes a partir de um PDF  
            byte[] iPDF = geradorIT.geraPDF();  

            // Para gerar um array de bytes a partir de um PNG  
         //   byte[] PNG = geradorIT.geraPNG();
            
            DownloadBoleto.download(iPDF, t.getIdentificacaoTituloEmpresa()+"-"+t.getCliente().getRazaoSocial());
        	
        }
        
        else if (t.getBanco().getCodigoBanco().equals("001")){
        	
        	BancoDoBrasil bancoDoBrasil = new BancoDoBrasil();
            
    	    Boleto bBrasil = Boleto.novoBoleto()  
                .comBanco(bancoDoBrasil)  
                .comDatas(datas)  
                .comDescricoes("", "", "", "", "")  
                .comEmissor(emissor)  
                .comSacado(sacado)  
                .comValorBoleto(t.getValor())  
                .comNumeroDoDocumento(t.getIdentificacaoTituloEmpresa())  
                .comInstrucoes("", "", "", "", "")  
                .comLocaisDePagamento("", "");  

            GeradorDeBoleto geradorBB = new GeradorDeBoleto(bBrasil);

	           if(idTitulo == 1){
	           	 idTitulo++;
	           }else{
	           	idTitulo = 1;
	           }
            
            // Para gerar um boleto em PDF  
         //   geradorBB.geraPDF(diretorio+File.separator+"BancoDoBrasil.pdf");  

            // Para gerar um boleto em PNG  
          //  geradorBB.geraPNG(diretorio+File.separator+"BancoDoBrasil.png");  

            // Para gerar um array de bytes a partir de um PDF  
            byte[] bPDF = geradorBB.geraPDF();  

            // Para gerar um array de bytes a partir de um PNG  
        //    byte[] bPNG = geradorBB.geraPNG();
            
            DownloadBoleto.download(bPDF, t.getIdentificacaoTituloEmpresa()+"-"+t.getCliente().getRazaoSocial());

        	
        }
        
       
    }
}